#ifndef CMINION_H_INCLUDED
#define CMINION_H_INCLUDED

#include <map>

#include "LON.h"
#include "CNetworkIO.h"
#include "MinionStat.h"

class COverlord;

class CMinion
{
  public:
    //! Constructor
    CMinion();

    CMinion(minionStats &stats);

    //! Destructor
    ~CMinion();

    //! Gets
    minionStats& getStats();
    u32 minion_id() { return minion_id_; }

    //! Sets
    void set_minion_id(u32 id) { minion_id_ = id; }


    bool isMoving;

    static ITexture* getMinionPic(stringw typeName);

    static stringc getMinionModel(stringw typeName);

    static std::map <int, minionStats> minion_base;

    static void loadMinionBase(IVideoDriver *driver=0);

    static void loadMinionBaseNew(bool loadGraphic = false);

  protected:
    //! Minion Stats
    minionStats stats;

    u32 minion_id_;

  private:
    //! Minions database stuff
    static irr::core::map<stringw, ITexture*> vMinionPic;
    static irr::core::map<stringw, stringc> vMinionModel;

};

#endif // CMINION_H_INCLUDED
